//!模式，是Rust另一个强大的特性。它可以被用在let和match表达式里面。相信大家应该还记得我们在复合类型中提到的关
//! 于在let表达式中解构元组的例子，实际上这就是一个模式

//let表达式中解构元组，实际上这就是一个模式
#[test]
pub fn pattern_demo1(){
    let tup = (0u8, 1u8);
    let (x, y) = tup;
}
//如果一个模式中出现了和当前作用域中已存在的同名的绑定，那么它会覆盖掉外部的绑定。比如：
#[test]
pub fn pattern_demo2(){
    let x = 1;
    let c = 'c';

    //match作用域里的x这个绑定被覆盖成了'c'，而出了这个作用域，绑定x又恢复为1。这和变量绑定的行为是一致的。
    match c {
        x => println!("x: {} c: {}", x, c), //x: c c: c
    }

    println!("x: {}", x); //x: 1
}